Low-Density Parity-Check (LDPC) codes have recently attracted considerable attention owing to their capacity-approaching performance and low complexity iterative decoding. LDPC codes have been adopted in many standards such as DVB-S2 and IEEE802.16e. In addition, multiple-input multiple-output (MIMO) wireless systems have proven to be a solution to the high capacity requirement of many wireless systems. Accordingly, an LDPC coded MIMO-OFDM system is considered a strong candidate for the high throughput WLAN standard.
In a MIMO spatial multiplexing system, different data streams are transmitted in parallel, simultaneously. All transmitted streams experience different channel signatures, and are received overlapped at the receiver antennas. Therefore, the receiver must perform multi-signal detection. In terms of detection performance, the maximum likelihood bit metric detection is optimal. However, the computational complexity increases exponentially in relation to constellation size and the number of transmitter antennas. Therefore, suboptimal approaches are usually needed which first detect a symbol using a linear detector, followed by a soft posterior probability (APP) processing.
For example, in a MIMO system with Nt transmitter antennas and Nr receiver antennas, a received signal y can be represented as y=Hx+n, where y is Nrx1 received symbol vector, H is an NrxNt channel matrix, x is the Ntx1 transmitted signal vector, and n is a Nrx1 noise vector. As shown in FIG. 1, the transmitted signal can be estimated as {circumflex over (x)}=Wy=WHx+Wn using a MIMO Detector 12 in a receiver 10, where W is the pseudo-inverse of the channel matrix H. Then, the soft bit metrics used in outer error correction coding can be calculated from the estimated symbol {circumflex over (x)} in a soft metric calculation unit 14 to be used by a decoding unit 16.
The bit metrics can be calculated by finding the distance between {circumflex over (x)}k and the constellation point as the single input single output (SISO) case via the log-likelihood ratio (LLR) as in relation (1) below:
                                                                        LLR                ji                            =                                                (                                                            m                      ji                      1                                        -                                          m                      ji                      0                                                        )                                /                                  σ                  n                  2                                                                                                        =                                                (                                                                                    min                                                  a                          ∈                                                      C                            i                            1                                                                                              ⁢                                                                                                                                                                                            x                                ^                                                            j                                                        -                            a                                                                                                    2                                                              -                                                                  min                                                  a                          ∈                                                      C                            i                            0                                                                                              ⁢                                                                                                                                                                                            x                                ^                                                            j                                                        -                            a                                                                                                    2                                                                              )                                /                                  σ                  n                  2                                                                                        (        1        )            
where {circumflex over (x)}k is the estimated symbol at time index k, Cip represents the subset of the constellation point such that bit i is equal to p, a presents a particular constellation point in the subset Cip, mkip is the minimum distance between {circumflex over (x)}k and the constellation points in Cip, pε{0,1}, and σn2 represents the noise variance. For conventional convolutional decoding, the noise variance σn2 can be normalized to 1, therefore, omitted in the following example without loss of generality.
FIG. 2 shows an example with QPSK modulation. FIG. 2 shows an example of calculating (1) using QPSK modulation. For Gray labeled QPSK constellation, there are 4 symbols: (1+j)/√{square root over (2)}, (−1+j)/√{square root over (2)}, (−1−j)/√{square root over (2)} and (1−j)/√{square root over (2)}, (j=√{square root over (−1)}), mapped with 2 bits (b1b0), correspondingly as 10, 00, 01, 11. With an estimated symbol at k-th time slot {circumflex over (x)}k, which is a QPSK symbol, the soft bit information (b1 and b0) must be determined from {circumflex over (x)}k. Taken b0 for example (left graph in FIG. 2), both constellation point (1+j)/√{square root over (2)} (labeled as 10) and (−1+j)/√{square root over (2)} (labeled as 00) have b0 equals 0, i.e., Ci0={(1+j)/√{square root over (2)},(−1+j)/√{square root over (2)}}. As such, for b0=0, the minimum distance of {circumflex over (x)}k to (1+j)/√{square root over (2)} and (−1+j)/√{square root over (2)} must be found. In this case, the minimum distance
      min          a      ∈              C        i        0              ⁢                                                x            ^                    k                -        a                    2  is the distance between {circumflex over (x)}k and (−1+j)/√{square root over (2)}. Similarly for b0=1,
      min          a      ∈              C        i        1              ⁢                                                x            ^                    k                -        a                    2  can be obtained, which is the minimum distance between {circumflex over (x)}k and (−1−j)/√{square root over (2)}. The soft metric for b0 therefore equals to LLRki=mki1−mki0 for i=0. The right graph in FIG. 2 shows the case for b1. Both the constellation point (−1+j)/√{square root over (2)} (labeled as 00) and (−1−j)/√{square root over (2)} (labeled as 01) have b1=0. As such,
      m    ki    0    =            min              a        ∈                  C          i          0                      ⁢                                                              x              ^                        k                    -          a                            2      is the distance between {circumflex over (x)}k and (−1+j)/√{square root over (2)}. Similarly, for
            b      ⁢                          ⁢      1        =    1    ,            m      ki      1        =                  min                  a          ∈                      C            i            1                              ⁢                                                                            x                ^                            k                        -            a                                    2            is the distance between {circumflex over (x)}k and (1+j)/√{square root over (2)}. LLRki=mki1−mki0, i=1 is the distance.
For convolutional codes, only the trellis difference instead of the absolute metric values is needed when applying Viterbi decoding. However, for LDPC codes where the exact message-passing decoding algorithm is applied, the exact metric is required. Scaling the soft metric causes performance degradation, therefore losing the coding gain of LDPC over convolutional codes. As such, there is a need for a method of calculating the soft metric for LDPC codes.